// Partial<Type>用于构建（创建）一个类型，将Tpye的所有属性设置为可选
interface Props {
  id: string
  children: number[]
}

// Partial工具类型 - 参数/属性 可选
type PartialProps = Partial<Props>

// 演示
// 普通型
let p1: Props = {
  id: '',
  children: [1]
}

// Partial<Props>
let p2: PartialProps = {} // 属性值是可选的 可以不全选

// 属性值是可选的 可以选1个
let p3: PartialProps = {
  id: '1'
}

// 属性值是可选的 可以选全部
let p4: PartialProps = {
  id: '1',
  children: [111, 222]
}

// Pick<Type,Keys>从Type中选择一组属性来构造新类型
interface Propss {
  id: string
  title: string
  children: number[]
}

// PickProps类型有属性id和title，其中属性来源于Propss中的id和title
type PickProps = Pick<Propss, 'id' | 'title'>
type PickProps2 = Pick<Propss, 'title' | 'children'>

// Record
type RecordObj = Record<'a' | 'b' | 'c', string[]>
// 相当于
/* type RecordObj = {
  a:string[]
  b:string[]
  c:string[]
} */
